/**
 * Created by Administrator on 2017/6/23.
 */
var Promise = require('bluebird');

//以Genrator为唯一的输入
module.exports = function (genFn) {
  //让这个函数懂得如何 yield promise
  var cr = Promise.coroutine(genFn);
  //返回一个普通的 Express 路由函数
  return function (req, res, next) {
    //当这个函数被执行时，它会使用 coroutine来yield promise，捕获期间发生的异常，然后将其传递给next函数
    cr(req, res, next).catch(next);
  }
}